/*!
 * @file 1config-functor.h
 * @author Kun
 * @date 2024-05-18
 *
 * @brief 定义一个 Add 类，实现 add() 函数，并重载 () 运算符
 */
#ifndef _1CONFIG_FUNCTOR_H_
#define _1CONFIG_FUNCTOR_H_

class Add {
public:
    template<typename T>
    T add(T a, T b) { return a + b; }

    // ! 与 add(T a, T b) 效果相同, 如果数据量大，那就采用引用传递
    // template <typename T> T add(T &a, T &b) { return a + b; }

    template<typename T>
    T add(T *a, T *b) { return *a + *b; }

    // ()运算符重载
    template<typename T>
    T operator()(T a, T b) { return add(a, b); }
};

#endif // _1CONFIG_FUNCTOR_H_